package com.easondongh.blog.service;

import com.easondongh.blog.pojo.Blog;
import com.easondongh.blog.pojo.BlogCollection;
import com.easondongh.blog.pojo.BlogGoods;
import com.easondongh.blog.utils.Page;
import com.easondongh.blog.vo.BlogVo;

import java.util.List;

/**
 * @author EasonDongH
 * @date 2020/3/26 21:21
 */
public interface BlogService {

    /**
     * 新增博客
     * @param blog
     */
    void save(Blog blog);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    Blog getById(String id);

    /**
     * 更新博客信息
     * @param blog
     */
    void update(Blog blog);

    /**
     * 根据id查找博客
     * @param id
     * @return
     */
    BlogVo readById(String id);

    /**
     * 删除
     * @param id
     */
    void deleteById(String id);

    /**
     * 分页查询
     * @param page
     * @return
     */
    Page<BlogVo> getByPage(Page<BlogVo> page);

    /**
     * 获取推荐阅读
     * @return
     */
    List<Blog> getRecommend();

    /**
     * 获取文章时间轴，仅返回博客标题、创建时间
     * @return
     */
    List<Blog> getTimeline();

    /**
     * 文章点赞
     * @param blogGoods
     */
    void goodByBlogAndUser(BlogGoods blogGoods);

    /**
     * 判断当前用户是否已给当前文章点赞
     * @param userId
     * @param id
     * @return
     */
    boolean hasGoodByBlogAndUser(Integer userId, String id);

    /**
     * 文章收藏
     * @param blogCollection
     * @return
     */
    void collectByBlogAndUser(BlogCollection blogCollection);

    /**
     * 判断当前用户是否已收藏当前文章
     * @param blogId
     * @return
     */
    boolean hasCollectByBlogAndUser(Integer userId, String blogId);
}
